from views.base import BaseHandler
from db.datab import db
from util.myredis import r
import snowflake.client,time

def create_ordercode(tablename,count):
    #生成唯一id
    code =snowflake.client.get_guid()
    #用redis解决时钟回拨，根据key查询上一次存入的结果，和当前生成的对比，如果当前小于redis中存储的，说明发生时钟回拨
    value = r.get_str(tablename)
    if value:
        if int(code)<int(value):
            create_ordercode(tablename,count)
    #把最后一次生成的存入redis
    r.set_str(tablename,code)
    #取模获取到表
    number = hash(code)%int(count)
    if number == 0:
        return tablename,code
    else:
        return tablename + str(number),code
from util.comm import get_ali_object

class LandmarkHandler(BaseHandler):
    def post(self):
        #获取页面参数
        #生成code雪花算法生成code
        #加入标的表
       
        tablename,code=create_ordercode("landmarks",3)
        print('code=:'+str(code)+":table=:"+tablename)
        print(tablename,code)
        # sql = "insert into "+tablename+"(code,) values(%d)"%(int(code))
        #生成标的数据，将唯一的标识code加入redis待审核队列中

    def get(self):
        orderno = "2342434234"
        score = int(time.time())+1800
        r.sortedset_add("cancelorderlist","2342434234",score)
        r.sortedset_add("cancelorderlist",orderno,score)
        pay = get_ali_object()
         # 生成支付的url
        query_params = pay.direct_pay(
            subject="test",  # 商品简单描述
            out_trade_no=str(orderno),  # 用户购买的商品订单号（每次不一样） 20180301073422891
            total_amount=float(100.00),  # 交易金额(单位: 元 保留俩位小数)
        )
        pay_url = "https://openapi.alipaydev.com/gateway.do?{0}".format(query_params)  # 支付宝网关地址（沙箱应用）
        self.write({"code":200,'url':pay_url})

